home *** CD-ROM | disk | FTP | other *** search
- #NO_APP
- gcc2_compiled.:
- #APP
-
- .text
- .even
- _funcname:
- .ascii "atan2\0"
- .even
-
- .globl _atan2
- _atan2:
- | denormalized numbers are treated as 0
- tstl sp@(12)
- beq 5f | x == 0!
- blt 1f | x < 0!
- | x > 0: return atan(y/x)
-
- fmoved sp@(4)@,fp0 | get y
- fdivd sp@(12),fp0 | y/x
- fatanx fp0,fp0 | atan(y/x)
- bra 3f | return
- 1: | x < 0
-
- fmovecr #0,fp1 | get pi
- fmoved sp@(4)@,fp0 | get y
- fdivd sp@(12),fp0 | y/x
- fatanx fp0,fp0 | atan(y/x)
- btst #31,sp@(4) | sign(y)
- beq 2f | positive!
-
- fnegx fp1,fp1 | transfer sign
- 2: faddx fp1,fp0 | sign(y)*pi + atan(y/x)
- | bra 3f | return
- 3:
- fmoved fp0,sp@- | return result
- moveml sp@+,d0/d1
- 4:
- rts | sigh.
- 5: | x == 0
- movel #1073291771,d0 | pi/2
- movel #1413754136,d1 |
-
- tstl sp@(4) |
- beq 6f | NaN
- bge 4b | exit
- bset #31,d0 | x < 0 : return -pi/2
- bra 4b
- 6: movel #-1,d0 | NaN
- movel #-1,d1 |
- bra 4b
-
-